package com.example.xinyun.init;

import com.example.xinyun.db.News;
import com.example.xinyun.provider.NewsProvider;
import com.example.xinyun.db.NewsResponse;
import com.google.gson.Gson;
import com.zzrv5.mylibrary.ZZRCallBack;
import com.zzrv5.mylibrary.ZZRHttp;
import ohos.aafwk.ability.AbilitySlice;
import ohos.agp.components.ListContainer;
import ohos.agp.window.dialog.ToastDialog;
import ohos.app.Context;

import java.util.ArrayList;
import java.util.List;

public class InitNews  {

    private  List<News> newsList=new ArrayList();
    private  NewsProvider newsProvider;
    public List<News> getNewsList() {
        return newsList;
    }

    //进行http请求并刷新listContainer
    public void Refresh(String url, Context context,AbilitySlice abilitySlice,ListContainer listContainer){
        //进行http访问
        ZZRHttp.get(url, new ZZRCallBack.CallBackString() {


            @Override
            //http访问出错，此部分在主线程中工作,可以更新UI等操做。
            public void onFailure(int code, String errorMessage) {
                new ToastDialog(context)
                        .setText("加载失败，请检查网络连接！")
                        .show();
            }
            @Override
            //http访问成功，此部分在主线程中工作，可以更新UI等操作。
            public  void onResponse(String response) {
                //将http请求返回的json字符串转换成一个NewsResponse类的对象
                NewsResponse newsResponse = new Gson().fromJson(response, NewsResponse.class);
                if (newsResponse.getCode().equals("200")){
                    //获取需要显示的新闻对象
                    List<News> data = newsResponse.getData();
                    //清空newsList中的数据
                    newsList.clear();
                    //将获取到的数据全部添加到newsList里面
                    newsList.addAll(data);
                    //对newsProvider进行更新
                    newsProvider=new NewsProvider(newsList, (AbilitySlice) abilitySlice);
                    listContainer.setItemProvider(newsProvider);
                }
            }
        });
    }
}
